package dynamic_proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

//客户端

public class Client{
	static public void main(String[] args) throws Throwable{
		//在这里指定被代理类，也就是真实对象
		RealSubject rs = new RealSubject();
		InvocationHandler ds = new DynamicSubject(rs);
		Class<?> cls = rs.getClass();
		//是调用Proxy.newProxyInstance一次性动态生成代理对象。
		Subject subject = (Subject) Proxy.newProxyInstance(cls.getClassLoader(), cls.getInterfaces(), ds);

//		Subject subject = new BoyYan();
//    	1: 得到代理
//    	2：通过代理得到真实对象
//	  	3：调用真实对象的方法
		subject.request(); 
	}
}

